package q136_singleNumber;

import java.util.HashSet;
import java.util.Set;

public class Solution_1 {
    public static void main(String[] args) {
        Solution_1 s = new Solution_1();
        System.out.println(s.singleNumber(new int[] {
            4,1,2,1,2
        }));
        int a = 1 & 1;
        int b = 1 | 1;
        System.out.println(a);
        System.out.println(b);

    }

    /**
     * 找出数组中只出现了一次的数（其他的数都出现了两次）
     * 首先想到hashset，反复增删，最后留下的数字。
     * 但是不满足o(1)的空间复杂度要求
     * @param nums
     * @return
     */
    public int singleNumber(int[] nums) {
        Set<Integer> set = new HashSet<Integer>();
        for (int i = 0; i < nums.length; i++) {
            if (!set.add(nums[i])) {
                set.remove(nums[i]);
            }else {
                set.add(nums[i]);
            }
        }
        return set.iterator().next();
    }
}
